
package edu.wpi.first.wpilibj.team1662;

import edu.wpi.first.wpilibj.DriverStationLCD;
import edu.wpi.first.wpilibj.IterativeRobot;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.Talon;
import edu.wpi.first.wpilibj.buttons.Button;
import edu.wpi.first.wpilibj.buttons.DigitalIOButton;
import edu.wpi.first.wpilibj.buttons.JoystickButton;
import edu.wpi.first.wpilibj.team1662.commands.EjectBall;
import edu.wpi.first.wpilibj.team1662.commands.LaunchBall;
import edu.wpi.first.wpilibj.team1662.commands.LockLauncher;
import edu.wpi.first.wpilibj.team1662.commands.RetractBar;
import edu.wpi.first.wpilibj.team1662.commands.ShiftDown;
import edu.wpi.first.wpilibj.team1662.commands.ShiftUp;

/**
 * This class is the glue that binds the controls on the physical operator
 * interface to the commands and command groups that allow control of the robot.
 */
public class OI {
    //// CREATING BUTTONS
    // One type of button is a joystick button which is any button on a joystick.
    // You create one by telling it which joystick it's on and which button
    // number it is.
    // Joystick stick = new Joystick(port);
    // Button button = new JoystickButton(stick, buttonNumber);
    
    // Another type of button you can create is a DigitalIOButton, which is
    // a button or switch hooked up to the cypress module. These are useful if
    // you want to build a customized operator interface.
    // Button button = new DigitalIOButton(1);
    
    // There are a few additional built in buttons you can use. Additionally,
    // by subclassing Button you can create custom triggers and bind those to
    // commands the same as any other Button.
    
    //// TRIGGERING COMMANDS WITH BUTTONS
    // Once you have a button, it's trivial to bind it to a button in one of
    // three ways:
    
    // Start the command when the button is pressed and let it run the command
    // until it is finished as determined by it's isFinished method.
    // button.whenPressed(new ExampleCommand());
    
    // Run the command while the button is being held down and interrupt it once
    // the button is released.
    // button.whileHeld(new ExampleCommand());
    
    // Start the command when the button is released  and let it run the command
    // until it is finished as determined by it's isFinished method.
    // button.whenReleased(new ExampleCommand());
    //Random comment
    //Random comment and stuff!
    
    private Joystick driver = new Joystick(RobotMap.drivePad);
    private Joystick manipulator = new Joystick(RobotMap.manipulator);
    private Button shiftUp = new JoystickButton(driver, RobotMap.shiftUp);
    private Button shiftDown = new JoystickButton(driver, RobotMap.shiftDown);
    private Button low = new JoystickButton(manipulator, 1);
    private Button mid1 = new JoystickButton(manipulator, 2);
    private Button mid2 = new JoystickButton(manipulator, 9);
    private Button high = new JoystickButton (manipulator,8);
    private Button launch = new JoystickButton(manipulator, RobotMap.launch);
    public int test = 1;
  
    
    public OI(){
        shiftUp.whenPressed(new ShiftUp());
        shiftDown.whenPressed(new ShiftDown());
        //if(launch.get()==true && test == 1){
            //test+= 1;
            launch.whenPressed(new LaunchBall());
        //}
        //else if(launch.get()==true && test == 2){
            //test-= 1;
            launch.whenReleased(new LockLauncher());
        //}
        
        //if()
        
        //System.out.println(driver.getRawAxis(6));
        
        
        
    }
    public boolean getButton(){
        if(low.get() == false)
            return false;
        else
            return true;
    }
    
    public double getSomething(){
        return driver.getRawAxis(7);
    }
    public double getRightStick(){
        return driver.getRawAxis(5);
    }   
    
    public double getLeftStick(){
        return driver.getRawAxis(2);
    }
    public double getConveyorThrottle(){
        return driver.getRawAxis(3);
    }
            
    
    
}